草庐IT

C++ 优化

全部标签

c - 如何从 Visual Studio C 编译器获得更有用的警告?

我正在使用VisualStudio2015C编译器,我发现它没有警告。例如,此代码在没有警告或错误的情况下编译(使用-Wall选项):#includeintmain(void){inti=2;free(&i);//Thecompilershouldtellme"Youaretryingtofreesomethingnotontheheap".return0;}-W4或-Wall没有检测到很多导致崩溃或/和未定义行为的事情,我还有其他选择吗可以用来警告这些错误吗?我知道我可以使用其他编译器,但我听说当您面向Windows平台时,VisualStudio附带的编译器更好。

c - 是否有关于多字节字符串转换为 unicode wstring 的快速实现?

在我的项目中,我采用Aho-Corasick算法在服务器端做了一些消息过滤模式,服务器得到的消息是多字节字符串。但是经过多次测试发现瓶颈是mulitbytestring和unicodewstring之间的转换。我现在用的是一对mbstowcs_s和wcstombs_s,占了整个模式将近95%的时间成本。另外,我试过MultiByteToWideChar/WideCharToMultiByte,它得到了同样的结果。所以我想知道是否还有其他更有效的方法来完成这项工作?我的项目是用VS2005搭建的,转换后的字符串会包含汉字。非常感谢。 最佳答案

windows - 优化 - 使用 Windows API 从磁盘读取文件

我正在使用WindowsAPI来处理文件。我的表现非常好。我分块读取文件,但我不知道它的最佳大小。我知道它应该是磁盘簇大小的倍数。磁盘是否有缓存?如果我使用比缓存大的block,我的性能应该最差吗?我说得对吗?谢谢! 最佳答案 是的,Windows在处理文件时提供了一个缓存层。参见officialMSdocumentation.我不确定确切的缓存大小和可能的权衡,缓存大小很可能取决于系统的可用内存大小和其他因素。另一个提高性能的好方法是使用异步I/OAPI。它更难编写和维护,但可以提高您的性能。参见officialexample.

c - 抢先将文件放入 Windows 页面缓存

我有一个用C语言编写的程序,允许用户滚动显示大约不计其数的小文件。每个文件在显示给用户之前都需要经过一定数量的处理(只读)。我已经实现了一个缓冲区,可以在用户位置周围一定半径范围内预处理文件,因此如果他们线性地处理它们,则不会有太多延迟。由于各种原因,我实际上一次只能在一个文件上运行我的处理算法(尽管我可以打开多个文件,并且可以从中读取)所以我的缓冲区按顺序加载。我的处理算法已尽可能优化,但我遇到了I/O问题。起初,我的加载过程很慢,但是当文件被访问几次后,速度提高了大约5倍。因此,我强烈怀疑是什么让我慢下来是在等待Windows页面缓存将我的文件拉入内存。我对那种事情知之甚少。如果我

c - dlib 库在 Visual Studio 2010 中的使用

我想寻求有关使用dlib的帮助对于我的小论文项目。具体来说,我需要使用BOBYQA优化例程。我正在用C语言在MSVisualStudio2010Express中编写项目。我对使用dlib等库的经验为零,而且我不知道什么是makefile以及如何编写makefile。我发现了一点提示here但由于我在这方面缺乏经验,我无法弄清楚如何在我的代码中编译和使用dlib。我想询问如何将dlib合并到我的代码中的分步说明,即:我应该从zipfile中提取dlib文件夹的确切位置?我应该向VisualStudio项目添加一些文件吗?还有其他我没有意识到的问题吗?我也将非常感谢一个简单的使用示例代码(

c# - 优化许多小文件的流式传输

我在LAN网络共享上有数十万个大小在0到8kb之间的小文本文件。我可以使用一些互操作调用kernel32.dll和FindFileEx递归地提取每个文件的完全限定UNC路径的列表,并将路径存储在内存中的集合类中,例如List.使用这种方法,我能够填充List相当快(每50k个文件名大约需要30秒,而Directory.GetFiles需要3分钟)。不过,一旦我爬取目录并将文件路径存储在List中我现在想传递存储在列表中的每个路径并读取小文本文件的内容并根据读入的值执行一些操作。作为测试平台,我迭代了List中的每个文件路径。将42,945个文件路径存储到此LAN网络共享并在每个File

java - 小便器算法 - 一个简单的优化

我是一名编程II学生,也是第一次发帖者。一个很可能是一个非常简单的问题却让我困惑了太久。*问题#3。一个经过充分研究的事实是,在洗手间的男士通常更喜欢通过占据最长的未占用位置序列的中间来最大化他们与已占用隔间的距离。例如,考虑十个摊位是空的情况。第一个访客会占据中间位置:_____X____下一位访客将在左侧空白区域的中间。__X__X____用Java编写一个程序,读取摊位的数量,然后在摊位填满时以上面给出的格式打印图表,一次一个。提示:使用boolean值数组来指示摊位是否有人。publicclassMenStall{publicstaticintnextStall(boolean

联想 DM5000H混合闪存阵列助力汽车街优化数据管理

联想DM5000H混合闪存阵列助力汽车街优化数据管理专注于汽车新零售领域的电商平台汽车街成立于2014年,总部位于上海,隶属于上海澍勋电子商务有限公司,由拥有全球最大的汽车交易平台和二手车拍卖公司的美国COX汽车、中国汽车流通协会引领的中国核心经销商集团、招商银行等共同发起并出资成立。汽车街利用在线交易平台和卫星信息同步传输设备等二手车拍卖科技产品为全球拍卖场的用户提供全套拍卖服务,并为客户提供汽车上牌、检验、翻新、融资、培训等增值服务,使复杂的二手车交易变得更透明、公正、简单、高效。作为中国最具影响力的专业二手车拍卖平台之一,汽车街利用先进的IT基础架构和数据管理解决方案,实现对其平台上多种

c++ - 如何从启用优化( Release模式)构建的二进制文件中分析故障转储?

到目前为止,我一直在项目中使用Debug模式二进制文件。因此,使用保留的符号文件很容易分析故障转储。现在我必须在Release模式下发布二进制文件。我们如何分析由Release模式二进制文件生成的转储文件。这有可能吗?我如何识别Release模式下的功能?(不需要生成和保存map文件) 最佳答案 您需要与可执行文件相对应的.pdb文件。这会给你符号。调试发布版本有几个棘手的部分:由于优化,操作顺序可能会发生变化整个函数/变量/等等。可能会被优化掉特别是,传递给函数的参数可能不存在(例如,“this”可能是一个寄存器,而不是内存中的一

c - 在没有 C 运行时的情况下与 VS2010 链接时未解析的符号

我正在处理一个有大小限制的项目,所以我不想链接到VisualStudio的C运行时。我使用静态运行时(/MT)和/NODEFAULTLIB:LIBCMT标志来执行此操作。我已经通过检查VS附带的运行时源解决了大部分问题。但是,编译器仍然会生成一些未解析的外部符号:_chkstk:生成用于检查大于4k的函数的堆栈。我可以关闭它或提供虚拟功能吗?__libm_sse2_pow和其他SSE调用:我可以通过关闭SSE代码生成来避免这些,但如果可能的话,我希望拥有它们。这些符号似乎来自Intel库(libmmd.lib?)。为什么这部分仍然是C运行时?_ftol2_sse:将浮点型转换为长整型。